Compute's operations have a targetId field that right now is of type String.
As soon as we mapped all possible resource URLs to identity classes we should change targetId to ResourceId type. Operation class should become:
public class Operation<T extends ResourceId> {
// ...
T targetId();
// ...
}
This way all methods in Compute will return the corresponding operation, eg:
Operation<SnapshotId> createSnapshot(SnapshotInfo snapshot, OperationOption... options);