* Items are transfered one by one calling sub-cloner apply() method.
*/
public CharSequence generateCollectionComplexFieldClonnerMethod(final ComplexField field) {
CharSequence _xblockexpression = null;
{
JvmTypeReference _javaType = field.getJavaType();
final String collectionType = _javaType.getQualifiedName();
JvmTypeReference _javaType_1 = field.getJavaType();
JvmTypeReference _typeOrCollectionTypeParameter = this._reflectionUtils.getTypeOrCollectionTypeParameter(_javaType_1);
final String collectionItemType = _typeOrCollectionTypeParameter.getQualifiedName();
StringConcatenation _builder = new StringConcatenation();
_builder.newLine();
_builder.append("private ");
_builder.append(collectionType, "");
_builder.append(" ");
String _fieldName = field.getFieldName();
String _firstLower = StringExtensions.toFirstLower(_fieldName);
_builder.append(_firstLower, "");
_builder.append("CollectionCloner(");
_builder.append(collectionType, "");
_builder.append(" thisCollection, ");
_builder.append(collectionType, "");
_builder.append(" otherCollection) {");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("if (otherCollection == null) return null;");
_builder.newLine();
_builder.append("\t");
JvmTypeReference _javaType_2 = field.getJavaType();
CharSequence _createCollection = this.createCollection(_javaType_2);
_builder.append(_createCollection, "\t");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("for (");