def METHOD_NAME(self, observer):
    position, velocity = self._position_au, self._velocity_au_per_d
    t = observer.t
    dt = light_time_difference(position, observer.position.au)
    if t.shape:
        position = (outer(velocity, t.tdb + dt - self.epoch).T + position).T
    else:
        position = position + velocity * (t.tdb + dt - self.epoch)
    if len(position.shape) > 1:
        if len(observer.position.au.shape) > 1:
            vector = position - observer.position.au
            vel = (observer.velocity.au_per_d.T - velocity).T
        else:
            vector = (position.T - observer.position.au).T
            vel = (observer.velocity.au_per_d - velocity.T).T
    else:
        vector = position - observer.position.au
        vel = (observer.velocity.au_per_d.T - velocity).T
    distance = length_of(vector)
    light_time = distance / C_AUDAY
    if len(position.shape) > 1 and not t.shape:
        tt = empty(position.shape[1:])
        tt.fill(t.tt)
        t = t.ts.tt_jd(tt)
    return vector, vel, t, light_time