code: private Class<?> defineStructure(Field destination, Field source){
  		
  		Class<?> destinationClass = destination.getType();
  		Class<?> sourceClass = source.getType();
  		
  		Class<?> result = null;
  		
  		// if destination is an interface
  		if(destinationClass.isInterface())
  			// if source is an interface
  			if(sourceClass.isInterface())
  					// retrieves the implementation of the destination interface
  					result = (Class<?>) implementationClass.get(destinationClass.getName());
  			// if source is an implementation	
  			else{
  				// retrieves source interface
  				Class<?> sourceInterface = sourceClass.getInterfaces()[0];
  				// if the destination and source interfaces are equal
  				if(destinationClass.equals(sourceInterface))
  					// assigns implementation to destination
  					result = sourceClass;
  				// if they are different
  				else
  					// destination gets the implementation of his interface
  					result = (Class<?>) implementationClass.get(destinationClass.getName());
  			}
  		// if destination is an implementation
  		else
  			result = destinationClass;
  		
  		return result;
  	}
docs: This method defines the destination structure for this operation.
  If destination class is an interface, a relative implementation will be found.
  
  @param destination destination field
  @param source source field