Rotate game object around a arbitrary line ( not through origin)

I have a gameobject that needs to rotate around an arbitrary line that does not go through the origin.

Any help is greatly appreciated it.
Cheers.

What about Transform.RotateAround? It rotates the object around the specified axis and position. Supposing that you want to rotate around the line defined by points A and B, for instance, the code could be something like this:

public var speed: float = 45; // rotation speed in degrees/second
public var A: Vector3; // point A
public var B: Vector3; // point B

function Update(){
  var axis: Vector3 = B - A; // calculate axis
  // rotate around point A, perpendicular to axis
  transform.RotateAround(A, axis, speed * Time.deltaTime);
}

simple man,
put a empty game object in the origin and child ur game object to the empty object
then move that game object to the arbitrary , finally rotate that empty parent object