title: Is this a Circular dependency?
body: <p>is this code a example of circular dependency?</p>
  
  <pre><code>package expr;
  import sheet.Sheet
  public class AdressExpr implements Expr
  {
      private Address address; 
      private Sheet sheet; 
      public double value(Sheet sheet)
      {
          return sheet.value(address);
      }
  }
  public interface Expr
  {
      public double value(Sheet sheet);
  }
  public class Adress
  {
      // omissions
  }
  
  package sheet; 
  import expr.Address; 
  import expr.Expr;
  
  public class Sheet implements SuperSheet
  {
      private Map &lt;Address, Expr&gt; map; 
      public double value(Address address)
      {
      return map.get(Address).value(this);
      }
  }
  public interface SuperSheet
  {
      public double value(Address address);
  }
  </code></pre>
  
  <p>I know the example is bad programming but doesn't the interface prohibit the circular dependency, due to the value method?</p>