# TODO(user,user): Resolve cycles

NAMESPACE com.google.common.collect.testing
NAMESPACE com.google.common.collect.testing.google
NAMESPACE com.google.common.escape
NAMESPACE com.google.common.escape.testing
NAMESPACE com.google.common.io
NAMESPACE com.google.common.net
NAMESPACE com.google.common.testing

# Allow our dependencies for now.
NAMESPACE junit.framework
NAMESPACE org.junit

# ***** REAL CYCLES *****
# Cycle exists until future completes
FIELD com.google.common.util.concurrent.AbstractFuture.Listener.executor com.google.common.util.concurrent.ExecutionSequencer.TaskNonReentrantExecutor

# ***** FALSE POSITIVES *****

# The Runnable type is so generic that it produces too many false positives.
TYPE java.lang.Runnable

FIELD com.google.common.base.Converter.reverse
FIELD com.google.common.collect.AbstractBiMap.EntrySet.iterator.$.entry com.google.common.collect.AbstractBiMap.EntrySet.iterator.$.next.$
FIELD com.google.common.collect.AbstractMapBasedMultimap.map
FIELD com.google.common.collect.AbstractMultimap.asMap com.google.common.collect.AbstractMapBasedMultimap.NavigableAsMap
FIELD com.google.common.collect.AbstractMultimap.values com.google.common.collect.LinkedListMultimap.get.$
FIELD com.google.common.collect.AbstractMultimap.values com.google.common.collect.Multimaps.MapMultimap.get.$
FIELD com.google.common.collect.AbstractMultiset.entrySet com.google.common.collect.FilteredEntryMultimap.Keys.entrySet.$
FIELD com.google.common.collect.ConcurrentHashMultiset.countMap
FIELD com.google.common.collect.ImmutableMultiset.asList
FIELD com.google.common.collect.ImmutableRangeMap.ranges
FIELD com.google.common.collect.ImmutableRangeSet.ranges
FIELD com.google.common.collect.ImmutableSet.asList
FIELD com.google.common.collect.Maps.FilteredMapValues.unfiltered
FIELD com.google.common.collect.Sets.SubSet.inputSet
FIELD com.google.common.collect.SingletonImmutableBiMap.inverse
FIELD com.google.common.collect.TreeTraverser.PostOrderNode.childIterator
FIELD com.google.common.collect.TreeTraverser.PreOrderIterator.stack
FIELD com.google.common.util.concurrent.AbstractFuture.Listener.executor com.google.common.util.concurrent.MoreExecutors.rejectionPropagatingExecutor.$
FIELD com.google.common.util.concurrent.AbstractService.listeners
# NonReentrantExecutor is not exposed to this field
FIELD com.google.common.util.concurrent.ExecutionSequencer.ThreadConfinedTaskQueue.nextExecutor com.google.common.util.concurrent.ExecutionSequencer.TaskNonReentrantExecutor
# Real cycle, but the runningState field is null'ed on completion of the future.
FIELD com.google.common.util.concurrent.AggregateFuture.runningState
FIELD java.util.AbstractMap.keySet com.google.common.collect.AbstractMapBasedMultimap.NavigableKeySet
FIELD java.util.AbstractMap.keySet com.google.common.collect.Maps.FilteredEntryNavigableMap.navigableKeySet.$
FIELD java.util.AbstractMap.keySet com.google.common.collect.TreeRangeMap.SubRangeMap.SubRangeMapAsMap.keySet.$
FIELD java.util.AbstractMap.values com.google.common.collect.TreeRangeMap.SubRangeMap.SubRangeMapAsMap.values.$
OUTER com.google.common.collect.StandardTable.Row
OUTER com.google.common.collect.TreeBasedTable.TreeRow
