code: @CheckForNull
      @SuppressWarnings( "NP_BOOLEAN_RETURN_NULL" )
      public Boolean setNodeAvailable( final K key, final boolean available ) {
          final ManagedItem<Boolean> item = _map.get( key );
          final Boolean availableObj = Boolean.valueOf( available );
          if ( item == null || item._value != availableObj ) {
              final ManagedItem<Boolean> previous =
                      _map.put( key, new ManagedItem<Boolean>( availableObj, System.currentTimeMillis() ) );
              return previous != null
                  ? previous._value
                  : null;
          } else {
              return item._value;
          }
      }
docs: If the specified key is not already associated with a value or if it's
  associated with a different value, associate it with the given value.
  This is equivalent to
  
  <pre>
  <code> if (map.get(key) == null || !map.get(key).equals(value))
  return map.put(key, value);
  else
  return map.get(key);
  </code>
  </pre>
  
  except that the action is performed atomically.
  
  @param key
  the key to associate the value with.
  @param available
  the value to associate with the provided key.
  @return the previous value associated with the specified key, or null if
  there was no mapping for the key