code: public Counter getOrCreateCounter(String name, long initial_value) throws Exception {
          Object existing_value=allow_dirty_reads? _get(name) : invoke(Command.get, name, false);
          if(existing_value != null)
              counters.put(name, (Long)existing_value);
          else {
              Object retval=invoke(Command.create, name, false, initial_value);
              if(retval instanceof Long)
                  counters.put(name, (Long)retval);
          }
          return new CounterImpl(name, this);
      }
docs: Returns an existing counter, or creates a new one if none exists
  @param name Name of the counter, different counters have to have different names
  @param initial_value The initial value of a new counter if there is no existing counter. Ignored
  if the counter already exists
  @return The counter implementation