public void SetUp()
        {
            localField = new LocalField(instance, field);
            localFinalField = new LocalField(instance, finalField);
            localStaticFinalField = new LocalField(null, finalStaticField);

            method = new MethodInfo(classInfo, "method", 0, "()V", null, null, null, Visibility.NULL, cost1, null, false);
            visitor = new TestabilityVisitor(repo, globalVariables, null, new RegExpWhiteList());
            frame = visitor.createFrame(method, 1);
            parentFrame = frame.getParentFrame();
        }
 /**
    * Computing the MethodCost for a MethodInfo involves tallying up:
    * <ul><li>The cost in any static initialization blocks of the class which holds the method.</li>
    * <li>The cost of constructing the object.</li>
    * <li>Recognizing injectability through setter methods. This in most cases improves the score
    * unless you have lots of code in your setter.</li>
    * <li>The field costs</li>
    * <li>Lastly the costs are added up for all of the lines in this method. This includes the
    * transitive non-mockable/interceptable closure of all the costs of the methods that are called.</li>
    * <li></li></ul>
    *
    * @param method to compute the cost for.
    * @return MethodCost for this method, including the accumulated costs the methods it calls. This
    * MethodCost is guaranteed to have already been linked (sealed for adding additional costs).
    */
 public MethodCost compute(MethodInfo method)
 {
     var visitor = new TestabilityVisitor(classRepository, new VariableState(), err, whitelist);
     TestabilityVisitor.CostRecordingFrame frame = visitor.createFrame(method, recordingDepth);
     addStaticInitializationCost(method, frame);
     if (!method.IsStatic() && !method.IsConstructor())
     {
         addConstructorCost(method, frame);
         addSetterInjection(method, frame);
     }
     addFieldCost(method, frame);
     return frame.applyMethodOperations();
 }