code: public static <E, L extends List<E>> SynchronizedMutableList<E> of(L list, Object lock)
      {
          MutableList<E> mutableList =
                  list instanceof MutableList ? (MutableList<E>) list : ListAdapter.adapt(list);
          return new SynchronizedMutableList<E>(mutableList, lock);
      }
docs: This method will take a MutableList and wrap it directly in a SynchronizedMutableList.  It will
  take any other non-GS-collection and first adapt it will a ListAdapter, and then return a
  SynchronizedMutableList that wraps the adapter.  Additionally, a developer specifies which lock to use
  with the collection.