Index: /Include/Classes/System/Collections/ArrayList.ab
===================================================================
--- /Include/Classes/System/Collections/ArrayList.ab	(revision 187)
+++ /Include/Classes/System/Collections/ArrayList.ab	(revision 188)
@@ -62,6 +62,6 @@
 	' Methods
 	'   Constractors
-	Sub ArrrayList()
-		data.ArrayList(16)
+	Sub ArrayList()
+		data.Init(16)
 	End Sub
 /*
@@ -72,5 +72,5 @@
 */
 	Sub ArrayList(c As Long)
-		data.ArrayList_Element(c)
+		data.Init(c)
 	End Sub
 
@@ -88,4 +88,11 @@
 	End Function
 
+	/*Override*/ Virtual Function Add(x As Object) As Long
+		setLeastCapacity(data.Size + 1)
+		data.Elm[data.Size] = VarPtr(x)
+		Add = data.Size
+		data.Size++
+	End Function
+
 	Virtual Sub AddRange(ByRef c As ICollection)
 		' TODO: 実装
@@ -109,5 +116,6 @@
 
 	Virtual Function Clone() As *ArrayList
-		Dim p = New ArrayList(data.Size)
+		Dim p As *ArrayList
+		p = New ArrayList(data.Size)
 		p->data.Size = data.Size
 		memcpy(p->data.Elm, This.data.Elm, SizeOf (*Object) * data.Size)
@@ -115,5 +123,5 @@
 	End Function
 
-	/*Const*/ /*Override*/ Virtual Function Contains(x As *Object) As Boolean
+	/*Const*/ /*Override*/ /*Virtual Function Contains(x As *Object) As Boolean
 		Dim i As Long
 		For i = 0 To ELM(data.Size)
@@ -122,9 +130,9 @@
 			End If
 		Next
-	End Function
+	End Function*/
 
 	' CopyTo
 	/*Const*/ /*Override*/ Virtual Function GetEnumerator() As *IEnumerator
-		Return GetEnumerator(index, count)
+		'Return GetEnumerator(index, count)
 	End Function
 
@@ -284,5 +292,16 @@
 Class ArrayList_Element
 Public
+	Sub ArrayList_Element()
+		Init(0)
+	End Sub
 	Sub ArrayList_Element(c As Long)
+		Init(c)
+	End Sub
+
+	Sub ~ArrayList_Element()
+		free(Elm)
+	End Sub
+
+	Sub Init(c As Long)
 		If c > 0 Then
 			Elm = malloc(SizeOf (*Object) * c)
@@ -298,8 +317,4 @@
 	End Sub
 
-	Sub ~ArrayList_Element()
-		free(Elm)
-	End Sub
-
 	Sub Swap(ByRef x As ArrayList_Element)
 		Dim tmpElm = x.Elm
