code: @Override
  	public void generateSpecializedPart(SQLiteModelMethod method, TypeSpec.Builder classBuilder, MethodSpec.Builder methodBuilder, Set<JQLProjection> fieldList, boolean mapFields) {
  		//LiteralType listenerType=LiteralType.of(OnReadCursorListener.class);
  		ClassName listenerType=ClassName.get(OnReadCursorListener.class);
  		
  		int counter = SqlBuilderHelper.countParameterOfType(method, listenerType);
  		if (counter == 0) {
  			// non listener found
  			throw (new InvalidMethodSignException(method, "there is no parameter of type \"ReadCursorListener\""));
  		}
  		if (counter > 1) {
  			// more than one listener found
  			throw (new InvalidMethodSignException(method, "there are more than one parameter of type \"ReadCursorListener\""));
  		}
  
  		String listenerName = SqlSelectBuilder.getNameParameterOfType(method, listenerType);
  
  		methodBuilder.addCode("\n");
  		methodBuilder.beginControlFlow("if (_cursor.moveToFirst())");
  
  		// generate index from columns
  		methodBuilder.addCode("\n");
  
  		methodBuilder.beginControlFlow("do\n");
  		methodBuilder.addCode("$L.onRead(_cursor);\n", listenerName);
  		methodBuilder.endControlFlow("while (_cursor.moveToNext())");
  
  		// close cursor
  		methodBuilder.endControlFlow();
  		methodBuilder.endControlFlow();
  
  	}
docs: /*
  (non-Javadoc)
  
  @see com.abubusoft.kripton.processor.sqlite.SQLiteSelectBuilder.SelectCodeGenerator#generate(com.squareup.javapoet.MethodSpec.Builder)