docs: private MethodDeclaration generateStaticFillValuesMethod(EclipseNode tdParent, String builderClassName, TypeParameter[] typeParams, java.util.List<BuilderFieldData> builderFields, ASTNode source) {
  		MethodDeclaration out = new MethodDeclaration(((CompilationUnitDeclaration) tdParent.top().get()).compilationResult);
  		out.selector = FILL_VALUES_STATIC_METHOD_NAME;
  		out.bits |= ECLIPSE_DO_NOT_TOUCH_FLAG;
  		out.modifiers = ClassFileConstants.AccPrivate | ClassFileConstants.AccStatic;
  		out.returnType = TypeReference.baseTypeReference(TypeIds.T_void, 0);
  		
  		TypeReference[] wildcards = new TypeReference[] {new Wildcard(Wildcard.UNBOUND), new Wildcard(Wildcard.UNBOUND)};
  		TypeReference builderType = new ParameterizedSingleTypeReference(builderClassName.toCharArray(), mergeToTypeReferences(typeParams, wildcards), 0, 0);
  		Argument builderArgument = new Argument(BUILDER_VARIABLE_NAME, 0, builderType, Modifier.FINAL);
  		TypeReference parentArgument = createTypeReferenceWithTypeParameters(tdParent.getName(), typeParams);
  		out.arguments = new Argument[] {new Argument(INSTANCE_VARIABLE_NAME, 0, parentArgument, Modifier.FINAL), builderArgument};
  
  		// Add type params if there are any.
  		if (typeParams.length > 0) out.typeParameters = copyTypeParams(typeParams, source);
  
  		List<Statement> body = new ArrayList<Statement>();
  
  		// Call the builder's setter methods to fill the values from the instance.
  		for (BuilderFieldData bfd : builderFields) {
  			MessageSend exec = createSetterCallWithInstanceValue(bfd, tdParent, source);
  			body.add(exec);
  		}
  		
  		out.statements = body.isEmpty() ? null : body.toArray(new Statement[0]);
  		
  		return out;
  	}