private Point getPointFromRelativePositionToAnchor(RelativePosition relativePosition)
	{
		// Preconditions
		assertNotNull("World has not been created yet.", world);
		assertNotNull("Anchor molecule has not been created yet.", validAnchor);
		assertNotNull("Position not given.", relativePosition);
		assertFalse("Position unspecified.", relativePosition.equals(RelativePosition.NotSpecified));
		assertNotNull("Anchor is not yet in the world.", world.getPositionOfMolecule(validAnchor));
		
		// Setup
		final Point ANCHOR_POSITION = world.getPositionOfMolecule(validAnchor);
		final int ANCHOR_Y = ANCHOR_POSITION.y;
		final int ANCHOR_X = ANCHOR_POSITION.x;
		
		// Get the point corresponding to the position.
		switch (relativePosition)
		{
		case North:
			return new Point(ANCHOR_X, ANCHOR_Y - 1);
			
		case NorthEast:
			return new Point(ANCHOR_X + 1, ANCHOR_Y - 1);
			
		case NorthWest:
			return new Point(ANCHOR_X - 1, ANCHOR_Y - 1);
			
		case South:
			return new Point(ANCHOR_X, ANCHOR_Y + 1);
			
		case SouthEast:
			return new Point(ANCHOR_X + 1, ANCHOR_Y + 1);
			
		case SouthWest:
			return new Point(ANCHOR_X - 1, ANCHOR_Y + 1);
			
		case East:
			return new Point(ANCHOR_X + 1, ANCHOR_Y);
			
		case West:
			return new Point(ANCHOR_X - 1, ANCHOR_Y);
			
		default:
			throw new Error("Unknown/invalid position: " + relativePosition.name());
		}
		
	}