Java SAT Solver

org.sat4j.MaxSatLauncher.java

  - Line 49 : return new MaxSatDecorator(SolverFactory.instance().defaultSolver());

org.sat4j.ResultsManager.java

  - Line 60 : return (String[]) files.keySet().toArray(new String[0]);


C++ SAT Solver

zchaff_solver.cpp
  
  - Line 301 : variable(v1).watched(sign).push_back(ptr);

zchaff_utils.cpp
  
  - Line 85 : res += usage.ru_utime.tv_sec + usage.ru_stime.tv_sec;

All of the above are violations of the 'Law of Demeter' in that Objects reach through another object to reach for yet another object. By the Law of Demeter An object can only talk directly to its friends and thus should not require implicit knowledge of the internal structure of its 'friends friends'.

---------

Low Coupling Can Cause Unnecessary Complexity?

We agree with this statement. Low coupling decreases readability, complicates code maintenance, and discourages code re-use. In general, it creates complexity that can be avoided with proper delegation of concerns. Additionally, by generating constructs that are unaware of the internal structure of objects they access, larger programs are easier to debug and understand.